class SolicitudesController < ApplicationController
  #MODULE: Utilitarios

  # GET /solicitudes
  # GET /solicitudes.xml
  def index
    @solicitudes = Solicitud.all
    
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @solicitudes }
    end
  end

  # GET /solicitudes/1
  # GET /solicitudes/1.xml
  def show
    @solicitud = Solicitud.find(params[:id])
    @respuestas=SolicitudRespuesta.find(:all,:select=>:usuario_id,:conditions=>{:solicitud_id=>params[:id]}).map(&:usuario_id)
    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @solicitud }
    end
  end

  # GET /solicitudes/new
  # GET /solicitudes/new.xml
  def new
    @solicitud = Solicitud.new
    
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @solicitud }
    end
  end

  # GET /solicitudes/1/edit
  def edit
    @solicitud = Solicitud.find(params[:id])
  end

  # POST /solicitudes
  # POST /solicitudes.xml
  def create
    @solicitud = Solicitud.new(params[:solicitud])
    
    respond_to do |format|
      if @solicitud.save
        flash[:notice] =  'Solicitud creada correctamente.'
        format.html { params[:oper].nil? ? redirect_to(@solicitud) : render(:text => "Ok")}
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @solicitud.errors, :status => :unprocessable_entity }
      end
    end
  end

  def enviar #DESC: Enviar una solicitud de actualizacion de datos.
    solicitud = Solicitud.find(params[:id])
    mails=Usuario.activos.find(:all,:order=>:email).collect{|u| u.email}.compact
    grupos=[]
    (0..mails.count).each do 
      grupos<<mails.first(10)
      mails=mails.drop(10)
    end
    begin
      grupos.each do |emails|
        SolicitudMailer.deliver_solicitud_email(solicitud,emails)
        flash[:notice] =  'Solicitud enviada.'
      end
    rescue
      flash[:error] =  'Solicitud NO enviada.'
    end
    redirect_to(solicitud)
  end
  # PUT /solicitudes/1
  # PUT /solicitudes/1.xml
  def update
    @solicitud = Solicitud.find(params[:id])

    respond_to do |format|
      if @solicitud.update_attributes(params[:solicitud])
        flash[:notice] = 'Solicitud actualizado correctamente.'
        format.html { redirect_to(@solicitud) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @solicitud.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /solicitudes/1
  # DELETE /solicitudes/1.xml
  def destroy
    @solicitud = Solicitud.find(params[:id])
    @solicitud.destroy

    respond_to do |format|
      format.html { redirect_to(solicitudes_url) }
      format.xml  { head :ok }
    end
  end

  def descargar_adjunto #DESC: Descargar el archivo adjunto de una solicitud creada.
    solicitud = Solicitud.find(params[:id])
    if solicitud.adjunto.path
      send_file(solicitud.adjunto.path)
    else
      flash[:error]="No se pudo encontrar el archivo adjunto."
      redirect_to(solicitud)
    end
  end
end
